package com.aspire.boc.mms.gwcmp.util;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;

/**
 * 参数检查结果类
 * @author zhanghao
 *
 */
public class CheckResult {
	
	/**
	 * 检查结果是否正确: true:正确, false:错误
	 */
	private boolean isOk;
	
	/**
	 * 错误信息集合(List形式)
	 */
	private List<String> errorMsgList;
	
	private final static String ERROR_MSG_SEPERATOR = ",";
	
	public CheckResult() {
		
		super();
	}
	
	/**
	 * 创建检查结果对象
	 * @param isOk 是否正确
	 * @param errorMsg 错误消息
	 */
	public CheckResult(boolean isOk, String errorMsg) {
		
		super();
		this.isOk = isOk;
		addErrorMsg(errorMsg);
	}
	
	/**
	 * 创建检查结果对象(只写入检查正确与否, 无响应消息, 一般用于返回正确结果)
	 * @param isOk
	 */
	public CheckResult(boolean isOk) {
		super();
		this.isOk = isOk;
	}

	/**
	 * 获取检查结果.
	 * @return true:正确, false:错误
	 */
	public boolean isOk() {
		return isOk;
	}

	public List<String> getErrorMsgList() {
		return errorMsgList;
	}

	/**
	 * 添加单条错误信息
	 * @param errorMsg
	 */
	public CheckResult addErrorMsg(String errorMsg) {
		
		if(this.errorMsgList == null)
			this.errorMsgList = new ArrayList<String>();
		this.errorMsgList.add(errorMsg);
		return this;
	}
	
	/**
	 * 设置错误信息集合
	 * @param errorMsgList
	 */
	public void setErrorMsgList(List<String> errorMsgList) {
		this.errorMsgList = errorMsgList;
	}
	
	/**
	 * 获取错误消息串(由List转换而来)
	 * @param seperator 多条错误消息间隔符号, 非null值时使用指定值(默认英文逗号)
	 * @return 错误消息串
	 */
	public String getErrorMsgString(String seperator) {
		
		if(errorMsgList == null || errorMsgList.size() == 0)
			return "";
		if(seperator == null)
			seperator = ERROR_MSG_SEPERATOR;
		return StringUtils.join(errorMsgList.toArray(new String[]{}), seperator);
	}
	
	/**
	 * 获取错误消息串(由List转换而来)
	 * @return 错误消息串
	 */
	public String getErrorMsgString() {
		
		return getErrorMsgString(ERROR_MSG_SEPERATOR);
	}

	@Override
	public String toString() {
		return "CheckResult [isOk=" + isOk + ", errorMsgList=" + errorMsgList + "]";
	}
	
}